import type { OrderResult } from "@/types/order"
import { request } from "@/utils/http"

/**
 * 模拟发货-内测版
 * @description 在DEV环境下使用，仅在订单状态为待发货时，可模拟发货，调用后订单状态修改为待收货，包含模拟物流。
 * @param id 订单id
 */
export const getMemberOrderConsignmentByIdAPI = (id: string) => {
    return request({
      method: 'GET',
      url: `/member/order/consignment/${id}`,
    })
  }
  

  /**
 * 确认收货
 * @description 仅在订单状态为待收货时，可确认收货。
 * @param id 订单id
 */
export const putMemberOrderReceiptByIdAPI = (id: string) => {
    return request<OrderResult>({
      method: 'PUT',
      url: `/member/order/${id}/receipt`,
    })
  }
  /**
 * 获取订单物流
 * @description 仅在订单状态为待收货，待评价，已完成时，可获取物流信息。
 * @param id 订单id
 */
export const getMemberOrderLogisticsByIdAPI = (id: string) => {
    return request<OrderLogisticResult>({
      method: 'GET',
      url: `/member/order/${id}/logistics`,
    })
  }
  
  /** 物流信息 返回值类型 */
  export type OrderLogisticResult = {
    /** 快递公司 */
    company: {
      /** 公司名称 */
      name: string
      /** 快递编号 */
      number: string
      /** 联系电话 */
      tel: string
    }
    /** 商品件数 */
    count: number
    /** 物流日志 */
    list: LogisticItem[]
  }
  
  /** 物流日志 */
  export type LogisticItem = {
    /** 信息ID */
    id: string
    /** 信息文字 */
    text: string
    /** 时间 */
    time: string
  }
  
  /**
 * 删除订单
 * @description 仅在订单状态为待评价，已完成，已取消时，可删除订单。
 * @param data ids 订单集合
 */
export const deleteMemberOrderAPI = (data: { ids: string[] }) => {
    return request({
      method: 'DELETE',
      url: `/member/order`,
      data,
    })
  }
  
  /**
 * 取消订单
 * @description 仅在订单状态为待付款时，可取消订单。
 * @param id 订单id
 * @param data cancelReason 取消理由
 */
export const getMemberOrderCancelByIdAPI = (id: string, data: { cancelReason: string }) => {
    return request<OrderResult>({
      method: 'PUT',
      url: `/member/order/${id}/cancel`,
      data,
    })
  }
  